<!--
 * @Descripttion: 
 * @Version: 
 * @Author: gaohj
 * @Date: 2023-01-06 11:49:18
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-01-06 16:23:17
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var str2 = "孔子孟子老子,你知道你是什么子,你是我的妻子";
        // console.log(str2.charAt(5)); // 子 下标5是哪个元素 
        // console.log(str2.charAt(45)); // ''空字符串  


        // charAt() 方法返回指定位置的字符 没有返回空字符串


        // console.log(str2.charCodeAt(5)); // 子 的 unicode编码
        // 0~127 ASCII码  128 以后 是各个国家的字符 
        // console.log(str2.charCodeAt(45)); // NaN  

        // var str3 = 'wall eye  knee';
        // console.log(str3.toUpperCase()); // 转大写 WALL EYE  KNEE
        // console.log(str3); // 原字符串 永不改变 

        // var str4 = 'WALL EYE  KNEE';
        // console.log(str4.toLowerCase()); // 转大写 WALL EYE  KNEE
        // console.log(str4); // 原字符串 永不改变

        // var str5 = '会当凌绝顶,一把搂住你';
        // console.log(str5.substr(8,2));//开始的索引 截取的长度
        // console.log(str5); 


        // var str6 = '美女你指定是近视,要不然怎么看不出我喜欢你';
        // console.log(str6.substring(18,20)); // 开始的索引 结束的索引
        // // [18,20)  [18 19]
        // console.log(str6);

        // var test = [1,2,3];
        //             // -3-2-1
        // console.log(test[-1]); // undefined
        // // 数组字符串都不支持负数索引
        // // 数组和索引都有一个方法 slice() 从数组中截取一段
        // // slice() 方法里边可以传负数

        // var str7 = '人生有两次幸运就行,第一次是出生,第二次是遇见你';
        //                                        -5-6-4-3-2-1
        // console.log(str7.slice(0,2)); // [0,2)  [0 1] 人生
        // 截取的方向是从左到右
        // 开始是-2 结束是最后 length [-2,-1]
        // console.log(str7.slice(-2)); //  见你
        // console.log(str7.slice(-4,-6)); // ''空字符串
        // 因为 默认从左到右
        // -4 到 -6 从右到左 冲突了 所以什么也没拿到 


        // var str8= "你知道我的缺点么?缺点你";
        // console.log(str8.split('?').length);
        // console.log(typeof str8.split(''));
        // console.log(str8);

        // var str9 = '苍老师珍藏版.avi.mp4';
        // console.log(str9.split('.')[str9.split('.').length-1]);

        // var str10 = '2023-01-06';
        // console.log(str10.split('-')[2]);

        // 字符串.split('分隔符') 方法可以把字符串转成数组
        // 数组.join('连接符') 方法可以把数组转成字符串

        // var str11 = '何以解忧,唯有暴富';
        // console.log(str11.concat(',何以暴富,唯有爱我'));

        // href ="https://".concat("www.baidu.com/s?wd=")

        //var str12 = '美女什么时候结婚,美女说顺其自然吧,杨璐说,我小名叫自然,你顺把';
        // console.log(str12.indexOf('杨璐')); // 杨所在的索引
        // console.log(str12.indexOf('杨璐',20)); // 从下标20开始往右找  -1 

        // console.log(str12.lastIndexOf('美女')); //9
        // console.log(str12.lastIndexOf('大美丽',0)); // -1

        // var  str13 = "美女哪里人?美女说我是山东人,肯定不是,你是我心上人";
        // console.log(str13.includes("山东人")); // true  

        // var str14 = 'fy.qfedu.com/';
        // console.log(str14.startsWith('http://') ||str14.startsWith('https://')); // true


        // var str15 = 'fy.qfedu.cn';
        // console.log(str14.endsWith('com/') ||str14.startsWith('cn/')); // true
              
        // var str16 = "      你是铃儿我是叮当,铃儿响叮当      ";
        // // console.log('头'+str16.trim()+'尾'); // 去掉两边的空格
        // // console.log('头'.concat(str16.trim(),'尾')); // 去掉左边的空格
        // console.log('头'+str16.trimLeft()+'尾');
        // console.log('头'+str16.trimStart()+'尾');
        // console.log('头'+str16.trimRight()+'尾');
        // console.log('头'+str16.trimEnd()+'尾');
        // var str17 = "我觉得你像个地球,滚,因为你对我有吸引力滚";
        // var test = str17.replace('滚','为啥');
        // console.log(test);
        // console.log('原字符串',str17);

        // console.log('大前端yyds'.replace('大前端','h5'));


        //封装一个函数,返回每个字符出现的次数 结果是个对象
        // var strs = "我现在特别想吃东西,吃啥,痴痴的望着你";
        // // {"我":1,"现":1,"在":1,"特":1,"别":1,"想":1,"吃":1,"东":1,"西":1,"啥":1,"痴":1,"望":1,"着":1,"你":1}
        // function getCharCount(str){
        //     var res = {};
        //     // 遍历字符串 
        //     for(var k in  str){
        //         if(res[str[k]]){
        //             res[str[k]]++;
        //         }
        //         else{
        //             res[str[k]] = 1;
        //         }
        //     }
        //     return res;
            
        // }

        var test = {'name':'zhangsan','age':18,'address':'jinan'}
        // console.log(test['name']); // 'zhangsan'
        // console.log(test['sex']);// undefined

        // console.log('name' in test); // true
        // console.log('sex' in test); // false 




        // console.log(getCharCount(strs));
        //封装一个函数 判断一个数字是否是回文数  布尔  
        // 101 从左到右 从右到左 一样的数
        // 10101 从左到右 从右到左 一样的数   
        function isHuiWen(num){
            // num是个数值 
            // 101
            // 数组可以反转 
            // num=>字符串=> 数组
            // 数组=>字符串 =>数值
            // num 跟 反转后的数值比较 如果相同 true false

            // 数值 转 字符串 String()
            // 字符串 转 数组 split('')
            // 数组 转 字符串 join('')'123'
            return parseInt(String(num).split('').reverse().join('')) == num;
        }

        // console.log(isHuiWen(101)); // true
        // console.log(isHuiWen(123)); // false


        // 不用字符串自带的方法 把字符串转大写  
        // 65 A  97 a
        // 97-65 = 32
        // console.log('A'.charCodeAt()); // 65
        // console.log(String.fromCharCode(65)); // A
        function handleToUpperCase(str){
            // 'wall eye knee'
            // w 119 -32  87  W
            // a 97  -32  65  A
            // l 108 -32  76  L   
            // WAL
            // 'WALL EYE KNEE'' 
            // str 是个字符串
            // 遍历字符串 
            var res = '';
            for(var i=0;i<str.length;i++){
                res += String.fromCharCode(str[i].charCodeAt() - 32);
            }
            // 每个字符的ASCII码值 -32
            // ASCII码值 转 字符
            // 拼接

            return res;
        }


        console.log(handleToUpperCase("wall eye knee"));

        
    </script>
</body>
</html>